例6.2进制转换
描述
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
输入描述：
多组数据，每行为一个长度不超过30位的十进制非负整数。 （注意是10进制数字的个数可能有30个，而非30bits的整数）
输出描述：
每行输出对应的二进制数。
示例1
输入：
0
1
3
8

输出：
0
1
11
1000


#include<bits/stdc++.h>
using namespace std;

string Divide(string str,int x){//字符串除法
    int reminder=0;//保存余数
    for(int i=0;i<str.size();i++){
        int current=reminder*10+str[i]-'0';
        str[i]=current/x+'0';
        reminder=current%x;
    }
    int pos=0;
    while(str[pos]=='0'){//寻找首个非0下标
        pos++;
    }
    return str.substr(pos);//删除前置多余0
}

int main(){
    string str;
    while(cin>>str){
        int k=0;
        int num[100]={0};
        while(str.size()!=0){
            int last=str[str.size()-1]-'0';//最低位的值
            num[k++]=last%2;
            str=Divide(str,2);//整除运算
        }
        for(int i=k-1;i>=0;i--){
            printf("%d",num[i]);
        }
        printf("\n");
    }
    return 0;
}
